/*
 * RiverFrameBackend.java
 * Team qq 2011
 */
package com.google.code.timetrail.presenter;

import com.google.code.timetrail.backend.Control;
import com.google.code.timetrail.backend.River;

/**
 * A frame that allows for river crossing PRECONDITION: the current place in
 * Control must have a river crossing
 * 
 * @author Steven
 * @version 1.1
 * 
 */
public class RiverFrameBackend {

	/** The control object that gets important data from the back end **/
	private final Control gameControl;

	/** The River that this GUI shows to the player **/
	private final River currentRiver;

	/**
	 * This creates the class for the riverframebacked via constructor
	 * 
	 * @param gameControl the control for the game
	 */
	public RiverFrameBackend(Control gameControl) {
		this.gameControl = gameControl;
		this.currentRiver = new River(this.gameControl,
				this.gameControl.getCurrentPlace());
	}

	/**
	 * 
	 * @return The status of the river
	 */
	public String riverStatus() {
		return "At " + gameControl.getCurrentPlace().getName()
				+ " you encounter " + currentRiver.toString();
	}

	/**
	 * 
	 * @return The text that tells you that you have options
	 */
	public String optionsText() {
		return "You currently have only three options: ";
	}

	/**
	 * 
	 * @return the text associated with taking a ferry
	 */
	public String ferryText() {
		return "You can take the ferry which costs "
				+ currentRiver.getFerryPrice() + " time dollars";
	}

	/**
	 * 
	 * @return the text associated with the option to caulk the ship and float
	 */
	public String caulkText() {
		return "You can Try and caulk the wagon and float downstream";
	}

	/**
	 * 
	 * @return the text associated with the option to ford the river
	 */
	public String fordText() {
		return "Or you can just choose to ford the time stream";
	}

	/**
	 * 
	 * @return the text on the confirm button
	 */
	public String confirmText() {
		return "Confirm";
	}

	/**
	 * 
	 * @return the text displayed if there is an error that happens during
	 *         option selection
	 */
	public String errorText() {
		return "Problem Occured during option selection";
	}

	/**
	 * 
	 * @return the instance of the river that you are located
	 */
	public River getRiver() {
		return currentRiver;
	}

	/**
	 * This is used to determine whether or not to show the option to take a
	 * ferry in the River event screen
	 * 
	 * @return whether or not to take the ferry
	 */
	public boolean canTakeFerry() {
		return (gameControl.getInv().canRemoveItem(getRiver().getFerryPrice(),
				gameControl.getInv().getMoney()));
	}

	/**
	 * The name of the class
	 * 
	 * @return the name of the class
	 */
	@Override
	public String toString() {
		return "RiverFrameBackend";
	}
}
